<?php
class Arm_Validate_Password extends Zend_Validate_Abstract
{
    const NOT_FORMAT    = 'notFormat';
    const NOT_LEN       = 'notLen';
    const NOT_ELEMENTAR = 'notElementar';
    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_FORMAT => "Пароль должен состоять только с латинских букв a-z и цифр 0-9, Вы вели: %value%", 
        self::NOT_ELEMENTAR => "Пароль должен содержать и буквы и цифры, Вы вели: %value%",
        self::NOT_LEN => "Минимальная длина пароля 6 символов"
    );
    
    /**
     * Проверка пароля
     * @param string $value
     */
    public function isValid ($value)
    {
        $value = (string) $value;
        $this->_value = $value;
        // проверяем длину
        $len = new Zend_Validate_StringLength();
        $len->setMin(6);
        if($len->isValid($value) === false) {
            $this->_error(self::NOT_LEN);
            return false;
        }
        // проверяем формат.
        if(0 !== preg_match('~[^a-z0-9]+~', $value)) {
            $this->_error(self::NOT_FORMAT);
            return false;
        }
        // Проверяем что не с одних букв или цифр
        if(0 !== preg_match('~(^[a-z]+$)|(^[0-9]+$)~m', $value)) {
            $this->_error(self::NOT_ELEMENTAR);
            return false;
        }
        return true;
    }
}